﻿/*
SINACOR - BMF&Bovespa
Arquivo: ValidaAlteracaoTipoDescontoDiferenciado.cs
Criado em: 18-nov-2009 16:06:09
Arquiteto Responsável: WGeneroso.prg
*/
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using Sinacor.Infra.Service.Validation;
using Sinacor.Infra.Service.Common;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;
using Sinacor.Infra.Service.Validation.BusinessRules;
using Sinacor.Infra.Common.Validation;

namespace Sinacor.Servico.Bovespa.Corretagem.BusinessLogic.BusinessRuleValidation {

	/// <summary>
	/// Validador de inclusão de tipo de desconto diferenciado
	/// </summary>
	public class ValidaAlteracaoTipoDescontoDiferenciado : BaseBusinessRuleValidation<BusinessEntity.TipoDescontoDiferenciado>, IBusinessRuleValidation {

		#region Atributos 
        private int _erroObjetoNulo = 109596;
        private int _tipoDescontoExistente = 109598; 
		#endregion Atributos

		#region Propriedades 
		public int ErroObjetoNulo{
			get
			{
				return _erroObjetoNulo;
			}
			set
			{
				_erroObjetoNulo = value;
			}
		}
		public int TipoDescontoExistente{
			get
			{
				return _tipoDescontoExistente;
			}
			set
			{
				_tipoDescontoExistente = value;
			}
		} 
		#endregion Propriedades

		#region Construtores 
        public ValidaAlteracaoTipoDescontoDiferenciado() { } 
		#endregion Construtores

		#region Métodos 
		public List<ValidationError> GetErrors()
        {
            return base.ErrorsList;	
		}
		public void Validate()
        {
            if (base.EntityToValidate != null)
            {
                try
                {
                    SinacorValidation validation = new SinacorValidation();
                    validation.Validate<BusinessEntity.TipoDescontoDiferenciado>(base.EntityToValidate);

                }
                catch (ValidationException ex)
                {
                    base.AddValidationError(ex.ValidationErrors);
                }

                if (new ResourceAccess.TipoDescontoDiferenciado().VerificarExistenciaTipoDescontoDiferenciado(
                    new BusinessEntity.Parameter.FiltroTipoDescontoDiferenciado() { Codigo = EntityToValidate.Codigo, Descricao = EntityToValidate.Descricao, Obrigatorio = EntityToValidate.Obrigatorio }
                    ))
                {
                    base.AddValidationError(TipoDescontoExistente);
                }
            }
            else
            {
                base.AddValidationError(ErroObjetoNulo);
            }
		} 
		#endregion Métodos 

	}

}